1. Field
Various example embodiments herein generally relate to the field of RAID (Redundant Array of Independent Disks) storage systems and more particularly to a RAID controller.
2. Description
Exponential rise in Internet services has led to an exponential increase in the volume of data required to support these Internet services. Management of such large volumes of data demands high requirements for capacity, performance, and availability of storage systems. Traditionally, storage systems or storage arrays use hard disks. More recently, non-volatile flash storage devices, such as Solid State Devices (SSDs), have been increasingly deployed in storage systems and storage arrays, particularly for enterprise-level storage system setups. To handle the low performance and high failure rate of hard disk drives during actual applications and/or actual use, hard disk drives often use a Redundant Array of Independent Disks (RAID) mode. The RAID uses multiple disk drives to enable data protection via data mirroring or parity. Because the data being stored is spread across all drives in the RAID system, it enables the rebuilding of any failing unit with reference to the other units. Thus, RAID improves the Input/Output (I/O) performance of the storage system and the reliability of the host, such as a server or a workstation. The RAID is implemented using a RAID controller. Traditional storage devices, like Serial Advanced Technology Attachment (SATA) devices, deploy a hardware RAID controller.
However, implementing hardware RAID controller deployment for newer storage devices, such as next generation Solid State Devices (SSDs), Non-Volatile Dual In-line Memory Module-F (NVDIMM-F), and the like, is more difficult and/or not available because these storage devices are physically located in DIMM slots and controlled by a processor memory controller. Thus, realization of RAID for SSDs is only available through a software RAID controller that can be implemented as a feature of an Operating System (OS). With the deployment of RAID controller within the OS, currently a module such as a device driver handles the issue of a sudden power off event, where the device driver is required to write operation information before performing the actual operation. This results in two I/O operations to storage devices. A first operation is the writing information of the operation (read or write) being performed. A second operation is the actual operation (reading from or writing to) the storage devices. Thus, every I/O operation results in an additional I/O operation which effectively lowers the I/O performance. Also, additional writes may result in a lesser (e.g., reduced) life span of the SSD storage device, since all SSDs use NAND memory as the backend storage component and. NAND memory blocks may only be written to a finite number of times.